'use strict'

exports.attack = function(p1, p2) {
    let fightAttri1 = p1.getFightAttriCopy()
    let fightAttri2 = p2.getFightAttriCopy()
    let damage = 0
    let fightMsg = {
        p1: {
            fightAttri: p1.getFightAttriCopy(),
            name: p1.name
        },
        p2: {
            fightAttri: p2.getFightAttriCopy(),
            name: p2.name
        },
        result: 0
    }
    while (fightAttri1.hp > 0 && fightAttri2.hp > 0) {
        calcAttack(fightAttri1, fightAttri2)
        if (fightAttri1.hp > 0 && fightAttri2.hp > 0) {
            calcAttack(fightAttri2, fightAttri1)
        }
    }
    if (fightAttri1.hp > 0) {
        fightMsg.result = 1
    }
    return fightMsg
}


//计算攻击
function calcAttack(attacker, defender) {
    calcDamage(attacker, defender)
}

//计算伤害
function calcDamage(attacker, defender, random) {
    let defend = defender.defend
    if (defend < 0) {
        defend = 0
    }
    let damage = attacker.attack * attacker.attack / (defend + attacker.attack) //计算伤害
    if (damage <= 0) {
        damage = 1
    }
    damage = Math.ceil(damage)
    defender.hp = defender.hp - damage
    return damage
}
